package com.nmgydy.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class TimeFormat {
	
	private static final SimpleDateFormat defaultDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	
	public TimeFormat() {
		
	}
	
	/** yyyy-MM-dd HH:mm:ss */
	public static String getDefaultFormatDate(){
		return defaultDateFormat.format(new Date());
	}
	
	/** yyyy-MM-dd HH:mm:ss */
	public static String getDefaultFormatDate(Date date){
		return defaultDateFormat.format(date);
	}
	
	/**
	 * 获得当前时间
	 * @param time 时间格式 
	 * 				1.年 2.年月 3.年月日 4.年月日时 5.年月日时分 6.年月日时分秒 7.年月日时分秒毫秒
	 * @return times 当前时间
	 * */
	public static String getTimes(int time) {
		//TimeZone tz = TimeZone.getTimeZone("ETC/GMT+8");
		//TimeZone.setDefault(tz);
		String times = null;
		if(time < 1 || time > 7) {
			time = 7;
		}
		if (time == 1) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy");
			times = formatter.format(new Date());
		} else if (time == 2) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM");
			times = formatter.format(new Date());
		} else if (time == 3) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
			times = formatter.format(new Date());
		} else if (time == 4) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH");
			times = formatter.format(new Date());
		} else if (time == 5) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm");
			times = formatter.format(new Date());
		} else if (time == 6) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss");
			times = formatter.format(new Date());
		} else if (time == 7) {
			SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss-SSS");
			times = formatter.format(new Date());
		}
		return times;
	}
	
	/** 格式化日期 将指定格式的日期转换为新格式 */
	public static String formatStrDate(String dateStr, String oldStr, String newStr) {
		if (dateStr == null || dateStr.isEmpty()) {
			return "";
		}
		String rtn = null;
		SimpleDateFormat sdf = new SimpleDateFormat(oldStr);
		try {
			Date date = sdf.parse(dateStr);
			rtn = new SimpleDateFormat(newStr).format(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return rtn;
	}
	/**
	 * 获取加减后的时间
	 * 
	 * @param date
	 * @param number
	 * @return
	 */
	public static Date getTimeAdd(Date date, int number) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.MINUTE, number);
		return calendar.getTime();
	}
	public static Date parseDate(String date){
		try {
			return defaultDateFormat.parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	public static Date parseDate(String format,String date){
		try {
			return new SimpleDateFormat(format).parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
			return null;
		}
	}
	
	/** 获得当前时间 */
	public static String getTimes(String format) {
		return new SimpleDateFormat(format).format(new Date());
	}
	
	public static String getTime(String format,Date date) {
		return new SimpleDateFormat(format).format(date);
	}
	public static String getTime(Date date) {
		return defaultDateFormat.format(date);
	}
	
	/**
	 * 格式化日期 将yyyyMMdd格式的日期转换为yyyy-MM-dd格式
	 * 
	 * @param dateStr
	 *            日期字符串
	 * @return 新格式日期
	 */
	public static String formatStrDate(String dateStr) {
		if (dateStr == null || dateStr.isEmpty()) {
			return "";
		}
		String rtn = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		try {
			Date date = sdf.parse(dateStr);
			rtn = new SimpleDateFormat("yyyy-MM-dd").format(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return rtn;
	}
	/**
	 * 去除两边空格
	 * 
	 * @param value
	 *            字符串
	 * @return 不为空、不为null为""
	 */
	public static final String trim(Object value) {
		String rtn = "";
		if (value != null) {
			rtn = value.toString().trim();
		}
		return rtn;
	}

	/**
	 * 字符日期串转
	 * 
	 * @param date
	 *            日期
	 * @param formatStr
	 *            格式 "yyyy-MM-dd HH:mm:ss"
	 * @return 字符串日期
	 */
	public static String getStrByDate(Date date, String formatStr) {
		// TimeZone tz = TimeZone.getTimeZone("ETC/GMT+8");
		// TimeZone.setDefault(tz);
		SimpleDateFormat df = new SimpleDateFormat(formatStr);
		String result = df.format(date);
		return result;
	}
	/**
	 * 字符日期串转
	 * 
	 * @param date
	 *            日期
	 * @param formatStr
	 *            格式 "yyyy-MM-dd HH:mm:ss"
	 * @return 日期
	 */
	public static Date getDateByStr(String dateStr, String formatStr) {
		// TimeZone tz = TimeZone.getTimeZone("ETC/GMT+8");
		// TimeZone.setDefault(tz);
		DateFormat dd = new SimpleDateFormat(formatStr);
		Date date = null;
		try {
			date = dd.parse(dateStr);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return date;
	}
}
